package com.shenghua.token;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.shenghua.dao.model.User;

/**
 * Json web token (JWT), 是为了在网络应用环境间传递声明
 * 而执行的一种基于JSON的开放标准（(RFC 7519).定义了一种简洁的，
 * 自包含的方法用于通信双方之间以JSON对象的形式安全的传递信息。
 * 因为数字签名的存在，这些信息是可信的，JWT可以使用HMAC算法
 * 或者是RSA的公私秘钥对进行签名。
 * Browser-------------------------------------------->Server
 *   *-----------1.post username and password--------->*
 *   *<----------2.create a JWT with a secret--------->*
 *   *<----------3.return the JWT to the Browser-------*
 *   *-----------4.send the JWT on the Header--------->*
 *   *<----5.check JWT sign,get user info from JWT---->*
 *   *<----------6.send response to the client---------*
 */
public class TokenUtils {

    public static String getToken(User user) {
        String token="";
        token= JWT.create().withAudience(user.getId().toString())
                       .sign(Algorithm.HMAC256(user.getPwd()));
        return token;
    }
}
